Test Setup এবং Teardown

Web Development - জ্যাসমিনজেএস (JasmineJS)
297

JasmineJS এ টেস্টের আগে এবং পরে কিছু কার্যক্রম পরিচালনা করার জন্য Test Setup এবং Teardown ফাংশন ব্যবহার করা হয়। এগুলোর মাধ্যমে আপনি টেস্টের পরিবেশ প্রস্তুত করতে পারেন এবং টেস্টের পর অবশিষ্ট কাজগুলো সম্পন্ন করতে পারেন। JasmineJS এ beforeEach() এবং afterEach() ফাংশনগুলো সাধারণভাবে এই কাজগুলো করার জন্য ব্যবহৃত হয়।


Test Setup: beforeEach()

beforeEach() ফাংশনটি প্রতিটি টেস্ট কেসের আগে চলতে থাকে। এটি সাধারণত টেস্টের আগে কিছু প্রস্তুতি বা প্রিপারেশন করার জন্য ব্যবহৃত হয়, যেমন কোনো অবজেক্ট তৈরি করা, ডেটা সেটআপ করা, বা মকিং (mocking) করা।

beforeEach() এর কাঠামো:

beforeEach(function() {
  // টেস্টের আগে কোড এখানে থাকবে
});

উদাহরণ:

describe("Calculator", function() {
  let calc;

  beforeEach(function() {
    calc = new Calculator();  // প্রতিটি টেস্টের আগে Calculator ক্লাসের একটি নতুন ইনস্ট্যান্স তৈরি
  });

  it("should add two numbers correctly", function() {
    expect(calc.add(2, 3)).toBe(5);
  });

  it("should subtract numbers correctly", function() {
    expect(calc.subtract(5, 3)).toBe(2);
  });
});

এখানে:

  • beforeEach() ব্লকটি প্রতিটি টেস্ট কেসের আগে Calculator ক্লাসের একটি নতুন ইনস্ট্যান্স তৈরি করছে। এর ফলে, প্রতিটি টেস্ট কেসের জন্য আলাদা আলাদা অবজেক্ট ব্যবহার করা হয় এবং টেস্টে কোনো পারস্পরিক প্রভাব পড়ে না।

Teardown: afterEach()

afterEach() ফাংশনটি প্রতিটি টেস্ট কেসের পর চলতে থাকে। এটি সাধারণত টেস্টের পর পরিস্কার করার জন্য ব্যবহৃত হয়, যেমন ডেটা রিসেট করা, অবজেক্টগুলো মুছে ফেলা বা কোনো ক্লিন-আপ কাজ করা।

afterEach() এর কাঠামো:

afterEach(function() {
  // টেস্টের পরে কোড এখানে থাকবে
});

উদাহরণ:

describe("Calculator", function() {
  let calc;

  beforeEach(function() {
    calc = new Calculator();  // প্রতিটি টেস্টের আগে নতুন Calculator তৈরি
  });

  afterEach(function() {
    console.log("Test finished");  // প্রতিটি টেস্টের পরে একটি বার্তা প্রদর্শন
  });

  it("should add two numbers correctly", function() {
    expect(calc.add(2, 3)).toBe(5);
  });

  it("should subtract numbers correctly", function() {
    expect(calc.subtract(5, 3)).toBe(2);
  });
});

এখানে:

  • afterEach() ব্লকটি প্রতিটি টেস্টের পরে একটি বার্তা প্রদর্শন করছে, যা টেস্টের পরবর্তী পর্যায়ের জন্য কার্যকর হতে পারে। সাধারণত এখানে কোনো অবজেক্ট ক্লিন-আপ বা টেস্ট পরিবেশের জন্য অন্যান্য কাজ করা হয়।

beforeAll() এবং afterAll() এর ব্যবহার

যদি আপনি চাচ্ছেন যে টেস্টের শুরু এবং শেষের আগে একবার নির্দিষ্ট কোড এক্সিকিউট হোক (যেমন: একবার একটি ডাটাবেস কানেকশন তৈরি করা এবং টেস্ট শেষে সেটি বন্ধ করা), তখন beforeAll() এবং afterAll() ফাংশন ব্যবহার করা হয়। এই ফাংশনগুলো টেস্ট স্যুটের একেবারে প্রথম এবং শেষের আগে একবারই চলবে, প্রতিটি it() ব্লকের আগে নয়।

beforeAll() এর কাঠামো:

beforeAll(function() {
  // টেস্ট স্যুটের আগে একবার চলবে
});

afterAll() এর কাঠামো:

afterAll(function() {
  // টেস্ট স্যুটের পরে একবার চলবে
});

উদাহরণ:

describe("Database Connection", function() {
  let db;

  beforeAll(function() {
    db = new Database();  // টেস্ট স্যুটের আগে একবার ডাটাবেস কানেকশন তৈরি
    db.connect();
  });

  afterAll(function() {
    db.disconnect();  // টেস্ট স্যুটের পরে একবার ডাটাবেস কানেকশন বন্ধ
  });

  it("should query data correctly", function() {
    expect(db.query("SELECT * FROM users")).toBeTruthy();
  });

  it("should insert data correctly", function() {
    expect(db.insert("INSERT INTO users(name) VALUES('John')")).toBeTruthy();
  });
});

এখানে:

  • beforeAll(): টেস্ট স্যুটের আগে একবার ডাটাবেস কানেকশন তৈরি হচ্ছে।
  • afterAll(): টেস্ট স্যুটের পরে একবার ডাটাবেস কানেকশন বন্ধ হচ্ছে।

সারাংশ

JasmineJS এ Test Setup এবং Teardown ফাংশন ব্যবহার করে আপনি টেস্টের আগে এবং পরে কিছু প্রিপারেশন বা ক্লিন-আপ কার্যক্রম পরিচালনা করতে পারেন:

  • beforeEach(): প্রতিটি টেস্ট কেসের আগে কিছু কোড এক্সিকিউট করে, যেমন নতুন অবজেক্ট তৈরি বা ডেটা সেটআপ।
  • afterEach(): প্রতিটি টেস্ট কেসের পর কোড এক্সিকিউট করে, যেমন অবজেক্ট মুছে ফেলা বা ক্লিন-আপ কাজ।
  • beforeAll() এবং afterAll(): টেস্ট স্যুটের আগে এবং পরে একবারই কোড এক্সিকিউট করতে ব্যবহার হয়।
Content added By

beforeEach() এবং afterEach() এর ভূমিকা

191

JasmineJS এ beforeEach() এবং afterEach() ফাংশন দুটি টেস্ট কেসের পূর্বে বা পরে কিছু নির্দিষ্ট কার্যক্রম বা সেটআপ পরিচালনা করতে ব্যবহৃত হয়। এগুলি সাধারণত টেস্ট কেসগুলোর জন্য প্রাথমিক প্রস্তুতি এবং পরবর্তী কাজ সম্পাদনের জন্য ব্যবহৃত হয়, যেমন টেস্টের আগে ডেটা ইনিশিয়ালাইজ করা বা টেস্টের পরে কোনো ক্লিনআপ কার্যক্রম চালানো।


beforeEach() ফাংশন

beforeEach() ফাংশনটি প্রতিটি টেস্ট কেসের আগে একবার চালানো হয়। এটি সাধারণত টেস্ট কেসগুলোর জন্য প্রস্তুতি হিসেবে ব্যবহৃত হয়, যেমন ডেটা ইনিশিয়ালাইজ বা কোনো নির্দিষ্ট অবস্থা তৈরি করা।

beforeEach() এর কাঠামো:

beforeEach(function() {
  // কোড এখানে থাকবে যা প্রতিটি টেস্টের আগে চালানো হবে
});
  • ব্যবহার: টেস্টের আগে কিছু সেটআপ করতে এটি ব্যবহৃত হয়, যেমন একটি অবজেক্ট তৈরি করা বা ডাটাবেজে ডেটা ইনজেক্ট করা।

উদাহরণ:

describe("calculator", function() {
  let calc;

  beforeEach(function() {
    calc = new Calculator();  // প্রতিটি টেস্টের আগে নতুন একটি Calculator ইনস্ট্যান্স তৈরি হবে
  });

  it("should add two numbers correctly", function() {
    expect(calc.add(2, 3)).toBe(5);
  });

  it("should subtract two numbers correctly", function() {
    expect(calc.subtract(5, 3)).toBe(2);
  });
});

এখানে:

  • beforeEach(): প্রতিটি it() টেস্টের আগে একটি নতুন Calculator ইনস্ট্যান্স তৈরি করবে।
  • এটি নিশ্চিত করে যে প্রতিটি টেস্ট কেসের আগে আপনি একটি নতুন এবং পরিষ্কার অবস্থা পাবেন, যা টেস্টের ফলাফল সঠিক এবং নির্ভরযোগ্য করতে সাহায্য করে।

afterEach() ফাংশন

afterEach() ফাংশনটি প্রতিটি টেস্ট কেসের পরে একবার চালানো হয়। এটি সাধারণত টেস্টের পরে কোনো ক্লিনআপ বা পরবর্তী কার্যক্রম সম্পাদনের জন্য ব্যবহৃত হয়, যেমন টেস্ট ডেটা মুছে ফেলা বা কোনো অবস্থা পরিবর্তন করা।

afterEach() এর কাঠামো:

afterEach(function() {
  // কোড এখানে থাকবে যা প্রতিটি টেস্টের পরে চালানো হবে
});
  • ব্যবহার: টেস্টের পরে কিছু ক্লিনআপ করতে এটি ব্যবহৃত হয়, যেমন ব্যবহৃত ডেটা মুছে ফেলা বা পরিবেশ পরিবর্তন করা।

উদাহরণ:

describe("calculator", function() {
  let calc;

  beforeEach(function() {
    calc = new Calculator();  // প্রতিটি টেস্টের আগে নতুন একটি Calculator ইনস্ট্যান্স তৈরি হবে
  });

  it("should add two numbers correctly", function() {
    expect(calc.add(2, 3)).toBe(5);
  });

  it("should subtract two numbers correctly", function() {
    expect(calc.subtract(5, 3)).toBe(2);
  });

  afterEach(function() {
    // প্রতিটি টেস্টের পরে কিছু পরিস্কার কাজ করতে পারেন, যেমন লগ আউট করা
    console.log("Test finished");
  });
});

এখানে:

  • afterEach(): প্রতিটি it() টেস্টের পরে একটি মেসেজ লগ করছে যা টেস্ট সম্পন্ন হওয়ার পর পরবর্তী কার্যক্রমের জন্য প্রস্তুতি নিতে সাহায্য করে।
  • এটি টেস্টের পরবর্তী কার্যক্রমে কোনো অপর্যাপ্ত ডেটা বা অবস্থা থাকার ঝুঁকি কমিয়ে দেয়।

beforeEach() এবং afterEach() এর ব্যবহারিক উদাহরণ

আপনি যদি কোনো ডাটাবেজ বা নেটওয়ার্ক কল ব্যবহার করে থাকেন, তবে beforeEach() এবং afterEach() ব্লকগুলো টেস্টের আগে এবং পরে সঠিক পরিবেশ নিশ্চিত করতে সহায়তা করে।

উদাহরণ:

describe("Database Operations", function() {
  let db;

  beforeEach(function() {
    db = new Database();  // প্রতিটি টেস্টের আগে নতুন ডাটাবেজ কানেকশন তৈরি হবে
  });

  it("should insert a record correctly", function() {
    const result = db.insert({ id: 1, name: "Test" });
    expect(result).toBe(true);  // ডাটাবেজে রেকর্ড সঠিকভাবে ইনসার্ট হবে
  });

  it("should retrieve a record correctly", function() {
    db.insert({ id: 1, name: "Test" });
    const record = db.get(1);
    expect(record.name).toBe("Test");  // রেকর্ডটি সঠিকভাবে রিট্রিভ হবে
  });

  afterEach(function() {
    db.clear();  // প্রতিটি টেস্টের পরে ডাটাবেজ ক্লিনআপ হবে
  });
});

এখানে:

  • beforeEach(): প্রতিটি টেস্টের আগে নতুন ডাটাবেজ কানেকশন তৈরি করছে।
  • afterEach(): প্রতিটি টেস্টের পরে ডাটাবেজকে পরিষ্কার (clear) করছে, যাতে পরবর্তী টেস্টে আগের ডেটা প্রভাবিত না করে।

সারাংশ

  • beforeEach(): এটি প্রতিটি টেস্ট কেসের আগে চালানো হয় এবং টেস্ট কেসের জন্য সেটআপ তৈরি করে, যেমন ডেটাবেজ বা অবজেক্ট ইনিশিয়ালাইজ করা।
  • afterEach(): এটি প্রতিটি টেস্ট কেসের পরে চালানো হয় এবং টেস্ট কেসের পর ক্লিনআপ কার্যক্রম সম্পাদন করে, যেমন ডেটা মুছে ফেলা বা অবস্থা পরিবর্তন করা।

এভাবে beforeEach() এবং afterEach() এর মাধ্যমে আপনি আপনার টেস্ট কেসগুলোর পরিবেশকে সঠিকভাবে পরিচালনা করতে পারেন, যার ফলে আপনার টেস্টগুলো আরো নির্ভরযোগ্য এবং কার্যকরী হবে।

Content added By

Test Cases এর মধ্যে Setup এবং Teardown

251

JasmineJS এ Setup এবং Teardown এমন প্রক্রিয়া যা টেস্ট কেসের আগে এবং পরে কিছু নির্দিষ্ট কার্যক্রম চালানোর জন্য ব্যবহৃত হয়। এর মাধ্যমে টেস্টগুলোর আগে কিছু প্রস্তুতি এবং পরবর্তী ব্যবস্থাপনা করা যায়। এটি খুবই কার্যকর যখন আপনি একাধিক টেস্ট কেসে পুনরাবৃত্তি কার্যক্রম এড়াতে চান, যেমন কোনো অবজেক্ট তৈরি করা বা পরিষ্কার করা।

JasmineJS এ Setup এবং Teardown সাধারণত beforeEach() এবং afterEach() ফাংশন দিয়ে করা হয়। এছাড়া beforeAll() এবং afterAll() ফাংশনগুলোও পুরো টেস্ট সুটের জন্য একবার এক্সিকিউট করার জন্য ব্যবহৃত হয়।


beforeEach() এবং afterEach()

beforeEach() এবং afterEach() ফাংশনগুলি প্রতিটি টেস্ট কেসের আগে এবং পরে কার্যক্রম চালানোর জন্য ব্যবহৃত হয়।

  • beforeEach(): প্রতিটি টেস্ট কেসের আগে চলবে। এটি সাধারণত টেস্টের জন্য প্রয়োজনীয় সেটআপ কাজ করতে ব্যবহৃত হয়।
  • afterEach(): প্রতিটি টেস্ট কেসের পরে চলবে। এটি সাধারণত টেস্ট কেসের পরে পরিষ্কার বা টিয়ারডাউন কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়।

উদাহরণ:

describe("Calculator", function() {
  let calc;

  // Setup: প্রতিটি টেস্টের আগে নতুন Calculator তৈরি হবে
  beforeEach(function() {
    calc = new Calculator();
  });

  // Teardown: প্রতিটি টেস্টের পরে কিছু কার্যক্রম চালানো যাবে (যেমন লগিং)
  afterEach(function() {
    console.log("Test finished");
  });

  it("should add two numbers correctly", function() {
    expect(calc.add(2, 3)).toBe(5);
  });

  it("should subtract two numbers correctly", function() {
    expect(calc.subtract(5, 3)).toBe(2);
  });
});

এখানে:

  • beforeEach(): প্রতিটি টেস্ট কেসের আগে Calculator ক্লাসের একটি নতুন ইনস্ট্যান্স তৈরি হচ্ছে।
  • afterEach(): প্রতিটি টেস্টের পরে একটি মেসেজ লোগ করা হচ্ছে।

beforeAll() এবং afterAll()

beforeAll() এবং afterAll() ফাংশনগুলি পুরো টেস্ট সুটের জন্য একবার এক্সিকিউট হয়। এটি সাধারণত টেস্ট সুটের জন্য কিছু সেটআপ বা টিয়ারডাউন কাজ করতে ব্যবহৃত হয়, যেমন ডাটাবেসের সংযোগ তৈরি করা বা সম্পন্ন করা।

  • beforeAll(): পুরো টেস্ট সুটের শুরুতে একবার এক্সিকিউট হয়।
  • afterAll(): পুরো টেস্ট সুটের শেষে একবার এক্সিকিউট হয়।

উদাহরণ:

describe("Database Connection", function() {
  let dbConnection;

  // Setup: পুরো টেস্ট সুটের শুরুতে একবার DB সংযোগ তৈরি হবে
  beforeAll(function() {
    dbConnection = new DatabaseConnection();
    dbConnection.connect();
  });

  // Teardown: পুরো টেস্ট সুটের শেষে একবার DB সংযোগ বন্ধ হবে
  afterAll(function() {
    dbConnection.disconnect();
  });

  it("should fetch data correctly", function() {
    expect(dbConnection.fetchData()).toBeDefined();
  });

  it("should insert data correctly", function() {
    expect(dbConnection.insertData({ name: "John" })).toBeTruthy();
  });
});

এখানে:

  • beforeAll(): টেস্ট সুট শুরু হওয়ার আগে একবার DatabaseConnection এর একটি ইনস্ট্যান্স তৈরি হচ্ছে এবং সংযোগ স্থাপন হচ্ছে।
  • afterAll(): টেস্ট সুট শেষ হওয়ার পরে একবার DatabaseConnection এর সংযোগ বন্ধ করা হচ্ছে।

beforeEach(), afterEach(), beforeAll(), এবং afterAll() এর পার্থক্য

ফাংশনকখন এক্সিকিউট হয়ব্যবহৃত হয়
beforeEach()প্রতিটি টেস্ট কেসের আগেটেস্টের জন্য প্রস্তুতি বা ইনস্ট্যান্স তৈরি করতে
afterEach()প্রতিটি টেস্ট কেসের পরেটেস্ট কেসের পর পরিষ্কার বা টিয়ারডাউন কার্যক্রমে ব্যবহৃত হয়
beforeAll()পুরো টেস্ট সুটের আগে একবারসম্পূর্ণ সুটের জন্য একবার সেটআপ কাজ করার জন্য
afterAll()পুরো টেস্ট সুটের পরে একবারসুটের শেষে একবার পরিষ্কার বা টিয়ারডাউন কার্যক্রমে ব্যবহৃত হয়

সারাংশ

JasmineJS এ Setup এবং Teardown প্রক্রিয়া টেস্ট কেসের আগে এবং পরে কার্যক্রম চালানোর জন্য ব্যবহৃত হয়। আপনি beforeEach() এবং afterEach() ব্যবহার করে প্রতিটি টেস্ট কেসের জন্য পৃথক প্রস্তুতি এবং পরিষ্কার কার্যক্রম পরিচালনা করতে পারেন, এবং beforeAll()afterAll() ব্যবহার করে পুরো টেস্ট সুটের জন্য একবার সেটআপ এবং টিয়ারডাউন কার্যক্রম করতে পারেন। এই ফাংশনগুলো আপনার টেস্ট প্রক্রিয়াকে আরো দক্ষ এবং সুসংগঠিত করতে সাহায্য করে।

Content added By

Test Initialization এবং Cleanup Techniques

201

JasmineJS এ Test Initialization এবং Cleanup Techniques টেস্টের আগে এবং পরে কিছু নির্দিষ্ট কোড এক্সিকিউট করতে সহায়তা করে। এটি আপনার টেস্ট কেসগুলোকে সঠিকভাবে সেটআপ এবং পরিস্কার করতে সাহায্য করে, যাতে টেস্টগুলো নির্ভুল এবং কার্যকর হয়। এই টেকনিকগুলো beforeEach(), afterEach(), beforeAll(), এবং afterAll() এর মাধ্যমে পরিচালিত হয়।


Test Initialization

Test Initialization এর মাধ্যমে আপনি টেস্টের জন্য পূর্বপ্রস্তুতি নিতে পারেন, যেমন ডেটা ইনিশিয়ালাইজেশন বা ফাংশন/অবজেক্ট তৈরি করা। JasmineJS এ beforeEach() এবং beforeAll() ফাংশন এই কাজের জন্য ব্যবহৃত হয়।


beforeEach()

beforeEach() ফাংশনটি প্রতিটি টেস্ট কেসের আগে এক্সিকিউট হয়। এটি সাধারণত টেস্টের জন্য প্রয়োজনীয় পরিবেশ সেটআপ বা ইনিশিয়াল ডেটা তৈরি করতে ব্যবহৃত হয়।

উদাহরণ:
describe("Calculator", function() {
  let calc;

  beforeEach(function() {
    calc = new Calculator();  // প্রতিটি টেস্ট কেসের আগে একটি নতুন Calculator তৈরি করা হচ্ছে
  });

  it("should add two numbers correctly", function() {
    expect(calc.add(2, 3)).toBe(5);
  });

  it("should subtract two numbers correctly", function() {
    expect(calc.subtract(5, 3)).toBe(2);
  });
});

এখানে:

  • beforeEach() ফাংশনটি নিশ্চিত করে যে প্রতিটি টেস্ট কেসের আগে নতুন Calculator ইনস্ট্যান্স তৈরি হবে, যাতে আগের টেস্টের কোনো প্রভাব না পড়ে।

beforeAll()

beforeAll() ফাংশনটি একবার শুধুমাত্র টেস্টের প্রথমে এক্সিকিউট হয়। এটি সাধারণত একাধিক টেস্ট কেসের জন্য একবার ইনিশিয়ালাইজেশন করতে ব্যবহৃত হয়, যেমন ডাটাবেস কানেকশন বা ফাইল সিস্টেমের সাথে কাজ করা।

উদাহরণ:
describe("Database Tests", function() {
  let db;

  beforeAll(function() {
    db = new Database();  // এই ফাংশনটি একবারই চলবে, টেস্টের শুরুতে
    db.connect();          // ডাটাবেস কানেকশন স্থাপন
  });

  it("should retrieve data correctly", function() {
    const data = db.getData();
    expect(data).toBeDefined();
  });

  it("should save data correctly", function() {
    const result = db.saveData("test");
    expect(result).toBe(true);
  });
});

এখানে:

  • beforeAll() একবার টেস্ট শুরুর আগে ডাটাবেসের সাথে কানেকশন স্থাপন করেছে, যা সমস্ত টেস্টের জন্য প্রয়োজনীয়।

Test Cleanup

Test Cleanup এর মাধ্যমে আপনি টেস্ট কেস শেষ হওয়ার পর প্রয়োজনীয় পরিষ্কার বা টিয়ারডাউন কার্যক্রম করতে পারেন, যেমন ডাটাবেস সংযোগ বন্ধ করা বা অবজেক্ট মুছে ফেলা। JasmineJS এ afterEach() এবং afterAll() এই কাজের জন্য ব্যবহৃত হয়।


afterEach()

afterEach() ফাংশনটি প্রতিটি টেস্ট কেসের পর এক্সিকিউট হয়। এটি সাধারণত টেস্টের পর অবজেক্ট পরিস্কার বা অন্য যেকোনো কার্যক্রম করার জন্য ব্যবহৃত হয়।

উদাহরণ:
describe("File Handler", function() {
  let fileHandler;

  beforeEach(function() {
    fileHandler = new FileHandler();  // প্রতিটি টেস্ট কেসের আগে নতুন ফাইল হ্যান্ডলার তৈরি
  });

  afterEach(function() {
    fileHandler.cleanup();  // টেস্টের পর ফাইল হ্যান্ডলার ক্লিনআপ
  });

  it("should read file correctly", function() {
    const content = fileHandler.read("file.txt");
    expect(content).toBe("File Content");
  });

  it("should write file correctly", function() {
    fileHandler.write("file.txt", "New Content");
    const content = fileHandler.read("file.txt");
    expect(content).toBe("New Content");
  });
});

এখানে:

  • afterEach() ফাংশনটি প্রতিটি টেস্ট কেসের পর fileHandler.cleanup() কল করে, যা ফাইল সিস্টেমের ক্লিনআপ করবে।

afterAll()

afterAll() ফাংশনটি একবার শুধুমাত্র টেস্টের শেষে এক্সিকিউট হয়। এটি সাধারণত একাধিক টেস্টের পর একবার টিয়ারডাউন করতে ব্যবহৃত হয়, যেমন ডাটাবেস কানেকশন বন্ধ করা বা লগ ফাইল পরিষ্কার করা।

উদাহরণ:
describe("Database Cleanup", function() {
  let db;

  beforeAll(function() {
    db = new Database();
    db.connect();  // একবার ডাটাবেস কানেকশন স্থাপন
  });

  afterAll(function() {
    db.disconnect();  // একবার ডাটাবেস কানেকশন বন্ধ
  });

  it("should retrieve data correctly", function() {
    const data = db.getData();
    expect(data).toBeDefined();
  });

  it("should save data correctly", function() {
    const result = db.saveData("test");
    expect(result).toBe(true);
  });
});

এখানে:

  • afterAll() একবার টেস্টের শেষে ডাটাবেস কানেকশন বন্ধ করছে।

সংক্ষিপ্ত সারাংশ

JasmineJS এ Test Initialization এবং Cleanup Techniques ব্যবহৃত হয় টেস্টের আগে এবং পরে কিছু কার্যক্রম সম্পাদন করতে, যাতে টেস্টগুলো নির্ভুল এবং কার্যকরী হয়।

  • beforeEach(): প্রতিটি টেস্ট কেসের আগে চলবে, টেস্টের জন্য ইনিশিয়াল সেটআপ।
  • beforeAll(): একবার টেস্টের শুরুতে চলবে, একাধিক টেস্টের জন্য সাধারণ ইনিশিয়াল সেটআপ।
  • afterEach(): প্রতিটি টেস্ট কেসের পরে চলবে, টেস্টের পরের ক্লিনআপ বা পরিস্কার।
  • afterAll(): একবার টেস্টের শেষে চলবে, একাধিক টেস্টের পর সাধারণ টিয়ারডাউন বা পরিস্কার।
Content added By

Nested describe() ব্লক এবং Teardown

256

JasmineJS এ টেস্ট গঠন আরও আরও সুনির্দিষ্ট এবং কার্যকরী করতে nested describe() ব্লক এবং teardown ফাংশন ব্যবহৃত হয়। এগুলোর মাধ্যমে আপনি জটিল টেস্ট কেসগুলোকে আরো শ্রেণিবদ্ধভাবে সাজাতে এবং প্রতিটি টেস্টের পরে প্রয়োজনীয় পরিস্কার বা cleanup কার্যক্রম পরিচালনা করতে পারেন।


Nested describe() ব্লক

Nested describe() ব্লক ব্যবহার করে আপনি একটি describe() ব্লকের মধ্যে আরেকটি describe() ব্লক রাখতে পারেন। এটি আপনাকে টেস্ট কেসগুলোর মধ্যে সম্পর্ক তৈরি করতে এবং টেস্ট গোষ্ঠী গঠন করতে সাহায্য করে। সাধারণত একটি ফিচারের বিভিন্ন উপাংশ বা সাব-ফিচার পরীক্ষা করতে nested describe() ব্যবহার করা হয়।

উদাহরণ:

describe("Calculator", function() {

  describe("Addition", function() {
    it("should add two positive numbers correctly", function() {
      const result = 2 + 3;
      expect(result).toBe(5);
    });

    it("should return a negative number when adding two negative numbers", function() {
      const result = -2 + -3;
      expect(result).toBe(-5);
    });
  });

  describe("Subtraction", function() {
    it("should subtract two numbers correctly", function() {
      const result = 5 - 3;
      expect(result).toBe(2);
    });

    it("should return a negative result when subtracting a larger number from a smaller number", function() {
      const result = 3 - 5;
      expect(result).toBe(-2);
    });
  });

});

এখানে:

  • Outer describe(): পুরো Calculator ফিচারকে বর্ণনা করছে।
  • Inner describe(): এর মধ্যে Addition এবং Subtraction ফিচারের জন্য আলাদা টেস্ট কেস রয়েছে।

Nested describe() ব্লকগুলো টেস্টের গঠন আরও পরিষ্কার এবং সুনির্দিষ্ট করে, যাতে আপনি আলাদা আলাদা ফিচার বা কার্যকারিতা পরীক্ষা করতে পারেন।


Teardown এবং Cleanup

JasmineJS এ Teardown হল একটি প্রক্রিয়া, যা টেস্ট কেসের পরে কিছু পরিস্কার বা cleanup কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। এটি afterEach() ফাংশনের মাধ্যমে করা হয়। afterEach() প্রতিটি টেস্ট কেসের পর স্বয়ংক্রিয়ভাবে রান হয় এবং যেখানে প্রয়োজন, সেখানে রিসোর্স বা অবস্থা পুনরায় সেট করতে বা মুক্ত করতে সহায়তা করে।

afterEach() ফাংশন

afterEach() ফাংশনটি প্রতিটি টেস্ট কেসের পর রান হয় এবং এটি টেস্টের পরে সম্পাদন করা পরিস্কার বা cleanup কাজগুলো করতে ব্যবহৃত হয়। এটি beforeEach() এর বিপরীত, যা টেস্টের আগে কোড এক্সিকিউট করে।

উদাহরণ:

describe("Calculator", function() {
  let calc;

  beforeEach(function() {
    calc = new Calculator();  // প্রতিটি টেস্টের আগে নতুন একটি Calculator তৈরি হবে
  });

  it("should add two numbers correctly", function() {
    const result = calc.add(2, 3);
    expect(result).toBe(5);
  });

  it("should subtract two numbers correctly", function() {
    const result = calc.subtract(5, 3);
    expect(result).toBe(2);
  });

  afterEach(function() {
    // প্রতিটি টেস্টের পরে রিসোর্স পরিস্কার বা প্রয়োজনীয় cleanup কার্যক্রম
    console.log("Test completed, cleaning up...");
  });
});

এখানে:

  • beforeEach(): টেস্টের আগে Calculator ক্লাসের একটি নতুন ইনস্ট্যান্স তৈরি করছে।
  • afterEach(): প্রতিটি টেস্ট কেসের পরে পরিস্কার বা cleanup কার্যক্রম চালাচ্ছে। এখানে শুধু একটি লোগ বার্তা দেখানো হচ্ছে, তবে আপনি এখানে রিসোর্স মুক্তি বা অন্যান্য প্রয়োজনীয় কাজ করতে পারেন।

Nested describe() এর সাথে Teardown ব্যবহার

Nested describe() ব্লক এবং afterEach() ফাংশন একত্রে ব্যবহৃত হলে, আপনি প্রতিটি সাব-ফিচারের জন্য আলাদা টেস্ট কেস গঠন করতে পারেন এবং প্রতিটি টেস্টের পর আলাদা আলাদা পরিস্কার কার্যক্রম পরিচালনা করতে পারেন।

উদাহরণ:

describe("Calculator", function() {
  let calc;

  beforeEach(function() {
    calc = new Calculator();
  });

  afterEach(function() {
    console.log("Cleaning up after a test...");
  });

  describe("Addition", function() {
    it("should add two positive numbers correctly", function() {
      const result = calc.add(2, 3);
      expect(result).toBe(5);
    });

    it("should return a negative number when adding two negative numbers", function() {
      const result = calc.add(-2, -3);
      expect(result).toBe(-5);
    });
  });

  describe("Subtraction", function() {
    it("should subtract two numbers correctly", function() {
      const result = calc.subtract(5, 3);
      expect(result).toBe(2);
    });

    it("should return a negative result when subtracting a larger number from a smaller number", function() {
      const result = calc.subtract(3, 5);
      expect(result).toBe(-2);
    });
  });
});

এখানে:

  • beforeEach()afterEach() ফাংশনটি Calculator ক্লাসের ইনস্ট্যান্স তৈরি এবং পরিস্কার কার্যক্রম পরিচালনা করছে।
  • Nested describe() ব্লকগুলো প্রতিটি অপারেশন (Addition, Subtraction) আলাদাভাবে পরীক্ষা করছে।

সারাংশ

  • Nested describe() ব্লক: এটি একাধিক টেস্ট কেসকে শ্রেণীবদ্ধভাবে সাজানোর জন্য ব্যবহার করা হয়। এর মাধ্যমে আপনি বিভিন্ন ফিচার বা সাব-ফিচার পরীক্ষা করতে পারেন এবং একে অপরের মধ্যে সম্পর্ক তৈরি করতে পারেন।
  • Teardown (Cleanup): afterEach() ফাংশনটি প্রতিটি টেস্ট কেসের পরে পরিস্কার বা cleanup কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। এটি রিসোর্স ম্যানেজমেন্ট এবং পরবর্তী টেস্টে বিঘ্ন না ঘটানোর জন্য খুবই গুরুত্বপূর্ণ।

এই দুটি বৈশিষ্ট্য JasmineJS টেস্টিং প্রক্রিয়াকে আরো সুনির্দিষ্ট এবং কার্যকরী করে তোলে, যাতে আপনি বড় এবং জটিল অ্যাপ্লিকেশনেও দক্ষতার সাথে টেস্টিং করতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...